Virtual machines are widely utilized for both consumer and enterprise applications. Consumers prefer virtual machines because they offer a secure and simple alternative to local customized installations, which may prove technically demanding or vulnerable to malicious software. Administrators often opt to deploy virtual machines due to their scalability, security, and platform-agnostic accessibility.
Some organizations utilize virtual machine sessions to provide users with access to one or more specific applications. Often the resources required to initialize or instantiate a virtual machine session (e.g., a virtualized desktop or operating system (OS) environment) are greater than the resources required to initialize or run the application within the virtual machine session. Thus, an end user who has requested a virtualized instance of a specific application may be forced to wait substantial time for an underlying virtual machine session to be initialized.
One approach to reducing this overhead startup time is to configure user devices to request that virtual machine sessions be initialized prior to a time when a user is expected to request their creation (e.g., at a time of day preceding a time at which a user of the device has historically requested virtual machine sessions be created). This approach may provide the user with an improved experience by shifting the overhead processing to a point in time prior to the user's virtual machine session request. One problem with this approach is that many devices do not maintain continuous network connectivity (e.g., mobile devices) and thus may not be able to request initialization prior to the user's request.
Another approach to reduce this overhead startup time is to continue to host virtual machine sessions after a user has closed the underlying application (or to allow such virtual machine sessions to “linger”), and then utilize the hosted virtual machine session to run an application subsequently requested by the user. This approach reduces the time required for subsequent application requests by the user because a new virtual machine session does not have to be initialized. One problem with this approach is determining how long to continue to host the virtual machine session. If too short of a period is selected, a virtual machine session may not remain hosted long enough to be utilized in fulfilling any subsequent requests from the user. If too long of a period is selected, subsequent requests from other users may go unfilled due to an overutilization of resources to support lingering inactive sessions.